


//提交数据到后台的方法,通用的方法
function postal_post(form_id,posturl,callback)
{
    $.post(posturl,  $(form_id).serialize() ,
        function(data){
            callback(data);
        }, "json");
}



///////////////////////////编辑相关内容/////////////////////////////////////////////////

//提交到后台之后的回调函数
function postal_edit_callback(data)
{
    if(data.status == 1)
    {
        alert('结果正常，请去处理');
    }
    else
    {
        alert(data.message);
    }
}




//加入一个新的规则到当前的数据中
function rules_insert(obj)
{
    //数据组装
    var html = '<tr rel="0" ref="0">'
                +'<td>'
                +'<span><label class="area"></label><br>'
                +'<a href="javascript:void(0);" onclick="getregions(this)">编辑区域</a>'
                +'</span>'
                +'<input type="hidden" class="regions" value="">'
                +'<span></span>'
                +'</td>'
                +'<td><input class="first_value" value="" size="5" ></td>'
                +'<td><input class="first_price" value="" size="5" ></td>'
                +'<td><input class="step_value" value="" size="5" ></td>'
                +'<td><input class="step_price" value="" size="5" ></td>'
                +'<td><a href="javascript:void(0)" onclick="delrule(this)">删除</a></td>'
                +'</tr>';

//alert(html);
//数据追加

//更新属性追加后的效果
var len = $(obj).parent().parent().parent().children().length;
$(obj).parent().parent().parent().find(':first-child td:first').attr('rowspan',len);

$(obj).parent().parent().parent().children().eq(-2).before(html);


}



//添加新快递的方法抽象
function addexpress()
{
    var html = '<table class="xd-table express-table" data-id="0" ref="0" style="margin-bottom: 5px;">'
        +'<thead >'
        +'<tr >'
        +'<th style="text-align: center;font-weight: bold;" class="express">快递公司</th>'
        +'<th style="text-align: center;font-weight: bold;with:150px;" class="destination">运送地区</th>'
        +'<th style="text-align: center;font-weight: bold;">'+ frist +'</th>'
        +'<th style="text-align: center;font-weight: bold;">首运价格（元）</th>'
        +'<th style="text-align: center;font-weight: bold;">' + second + '</th>'
        +'<th style="text-align: center;font-weight: bold;">价格（元）</th>'
        +'<th style="text-align: center;font-weight: bold;">操作</th>'
        +'</tr>'
        +'</thead>'

        +'<tbody >'


        +'<tr rel="0" ref="1">'
        +'<td  rowspan="2" style="with:100px;">'
        +'<select class="express_name_id"> '+ region_select_html +' </select><br>'
        +'<a href="javascript:void(0);" onclick="delexpress(this)">删除此快递</a>'

        +'</td>'

        +'<td style="width:150px;">'
        +'<span >'

        +'包邮地区'

        +'</span>'
        +'<br >'
        +'<span ><label class="area"></label><br><a href="javascript:void(0);" onclick="getregions(this)">选择地区</a></span>'
        //+'<input type="hidden" class="regions" >'
        +'</td>'
        +'<td >/</td>'
        +'<td >/</td>'
        +'<td >/</td>'
        +'<td >/</td>'
        +'<td >/</td>'
        +'</tr>'

        +'<tr rel="0" ref="2">'

        +'<td >'
        +'<span >'

        +'默认地区'

        +'</span>'
        +'<br >'
        +'<span ></span>'
        +'</td>'
        +'<td ><input class="first_value"  size="5" ></td>'
        +'<td ><input class="first_price"  size="5" ></td>'
        +'<td ><input class="step_value"   size="5" ></td>'
        +'<td ><input class="step_price"   size="5" ></td>'
        +'<td >-</td>'
        +'</tr>'
        +'<tr class="tip"><td colspan="7"><a onclick="rules_insert(this)" style="margin-right: 20px;background: #bebebe;padding: 5px 15px;border-radius: 3px;" href="javascript:void(0);">添加规则</a></td></tr>'
        +'</tbody>'
        +'</table>';


    $('.public_select').append(html);


}


//提交之前的数据组装
function assembling()
{
    var rule_type_common = 0;//普通类型
    var rule_type_default = 2;//默认设置
    var rule_type_free = 1;//包邮地区

    var error_tip = '';//错误提示
    var do_post = true;

    //取得数字的值
    var get_number_value = function(value,default_value)
    {
        if(isNaN(value)){
            return default_value;
        }else{
            return value;
        }
    };

    //检测单个规则的方法
    var check_rule = function(rule_data)
    {
        //数值检测
        if(rule_data.type != rule_type_free)
        {
            var first_value = get_number_value(rule_data.first_value,0);
            var first_price = get_number_value(rule_data.first_price,0);
            var step_value = get_number_value(rule_data.step_value,0);
            var step_price = get_number_value(rule_data.step_price,0);

            if(first_value<=0 || first_price<=0 || step_value<=0 || step_price<=0)
            {
                error_tip = '收费规则数据有误';
                return false;
            }
        }
        //区域检测
        //alert(rule_data.regions.length);
        if(rule_data.type == rule_type_common)
        {
            if(rule_data.regions.length == 0)
            {
                error_tip = '请选择地区';
                return false;
            }
        }
        return true;
    };

    //判断一个数组是否有重复值

    var arr_isrepeat = function(arr){

        var hash = {};
        for(var i in arr) {
            if(hash[arr[i]])
                return true;
            hash[arr[i]] = true;
        }
        return false;
    };

    var template = {};
    var express = new Array();
    var express_names = new Array();//用于校验快递的唯一性
    $(".public_select table").each(function(i,n)
    {
        //提取大表单的数据信息
        var rules = new Array();
        var_region_ids = new Array();//地区id号，用于判断地区是否重复
        $(n).find('tbody tr').each(function (tri,trn){

            //去除提示层
            var tip = $(trn).attr('class');
            if(tip == 'tip')
            {
                return;
            }

            var single_rule = {};
            single_rule.id =  $(trn).attr('rel');//id
            single_rule.first_value = $(trn).find('.first_value').val();
            single_rule.first_price = $(trn).find('.first_price').val();
            single_rule.step_value = $(trn).find('.step_value').val();
            single_rule.step_price = $(trn).find('.step_price').val();
            single_rule.type = $(trn).attr('ref');


            //找到对应的收费规则-地区
            //地区数据
            single_rule.regions = [];
            var regions = new Array();
			var temp;
			$.each( $(trn).find('.regions'), function(i, n){
				temp = $(n).val();
				if(temp!='')
				{
				regions.push(temp);
				}
				
			});
			
            if(regions.length>0)
            {

				temp = regions.join(',');
				
				var regions_arr = temp.split(',');

				var len = regions_arr.length;
				for(var ii=0;ii<len;ii++)
                {
                    var_region_ids.push(regions_arr[ii]);
                    //single_rule.regions.push([country_id,regions_arr[ii],0,0]);
                    single_rule.regions.push(regions_arr[ii]);
                }
            }

            //验证数据
            if(!check_rule(single_rule))
            {
                do_post = false;
                alert(error_tip);
                return false;
            }
            rules.push(single_rule);

        });

        if(!do_post)
        {
            return false;
        }
        var exp_id = $(n).attr('data-id');
        var exp_name = $(n).find('.express_name_id').val();
        var type = $(n).attr('ref');

        //检测地区的数据是否发生重复
		
        if(arr_isrepeat(var_region_ids)){
            do_post = false;
            alert('地区重复选择了');
            return false;
        }

        express_names.push(exp_name);

        express.push({rules:rules,name:exp_name,'id':exp_id,'type':type});



    });

    if(!do_post)
    {
        return false;
    }

    //检测快递名称的唯一性
    if(arr_isrepeat(express_names))
    {
        do_post = false;
        alert('快递重复选择了');
        return false;
    }


    template.name = $('#template_name').val();
    template.express = express;
    template.region = $('#region_id').val();


    //准备提交数据
    $.post(post_edit_url, {data:JSON.stringify(template),ajax:1},
    function(data){

        if(data.done)
        {
            alert('数据处理成功');
            location.href="index.php?app=postal";
        }
        else
        {
            bzyy_tip('temp_edit_tip','提示','message',{type:'warning',text:data.msg});

        }

    }, "json");

}

//删除一个规则
function delrule(obj)
{
    if(confirm("是否真的删除?")){
        $(obj).parent().parent().remove();
    }

}

var regions_select_obj;
//选择地区的处理内容
function getregions(obj)
{
    regions_select_obj = obj;

    ajax_form('id_region_select', 'abc', "index.php?app=postal&act=regions", 650);
}

//确认地址保存的方法
function verify_region()
{
    obj = regions_select_obj;
    //alert('verify_region：地址确认');
    var len = $(".xd-table .region-item:checked:enabled").length;
    if(len == 0)
    {
        alert('请勾选后在进行操作');
        return false;
    }

    var arr = new Array();
    var names = new Array();

    $(".xd-table .region-item:checked:enabled").each(function(i,n){

        arr.push($(n).val());
        names.push($.trim($(n).parent().find('span').html()));

    });
	
	//取得国家对于的内容标示处理
	var classid = $('#region_data_list tr:first').attr('class');
	var classvalue = $(obj).parent().parent().find("."+classid+":hidden");

	if(classvalue.length == 0)
	{
		$(obj).parent().append('<input type="hidden" value="" class="regions '+ classid +'">');
	}

    $(obj).parent().parent().find("."+classid+":hidden").val(arr.toString());
	
	
	var labelhtml = $(obj).parent().parent().find('label[class="'+classid+'"]');

	if(labelhtml.length == 0)
	{
		$(obj).parent().parent().find('span br').before("<label class='"+ classid +"'></label>");;
	}

	$(obj).parent().parent().find('label[class="'+classid+'"]').html(names.join('&nbsp;'));
	
    //更新对应的显示问题


    //关闭窗口

    DialogManager.close('id_region_select');

}

//删除快递公司的方法
function delexpress(obj)
{
    //找到元素，删除
    var express = $(obj).parent().parent().parent().parent();
    $(express).remove();
}


//初始化地区的选中效果
function init_regions_checked()
{
	return init_regions_checked2();

    var obj = regions_select_obj;

    //找到被选中的数据express-table
    var regions_checked = new Array();
    var str = '';
    var temp = new Array();


    $(obj).parents(".express-table").find('.regions').each(function(i,n){

        str = $(n).val();
        if(str != '')
        {
            temp = str.split(',');
            regions_checked = regions_checked.concat(temp);
        }

    });

    //当前选中的数据
    var value_str = '';

    if($(obj).parent().parent().find('.regions'))
    {
        value_str = $(obj).parent().parent().find('.regions').val();
    }


    var now_checked_value = new Array();
    if(value_str != '')
    {
        now_checked_value = value_str.split(',');
    }

    //变量选项内容
    var value = 0;

    $("#region_for_select .region-item").each(function(i,n){

        value = $(n).val();

        if(regions_checked.indexOf(value) != -1)
        {

            $(n).attr('checked',true);

            if(now_checked_value.indexOf(value) == -1) {
                $(n).attr('disabled', true);
            }

        }


    });


    //封锁已选中过的数据

    //开启当前已选中的效果
}

function init_regions_checked2()
{
	var obj = regions_select_obj;

	//选中国家的区位码
	var coun_cla = $('#region_data_list tr:first').attr('class');
	var country_inx = new Array();
	
	var tmp = '';
	
	$.each( $(obj).parents('table').find('.'+coun_cla+':hidden'), function(i, n){
		tmp = $(n).val();
		if(tmp != '')
		{
			var tmp_arr = tmp.split(',');
			for (x in tmp_arr)
			{
				country_inx.push(tmp_arr[x]);
			}
		}
	});
	
	
	//当前选中的数据
    var value_str = '';
    if($(obj).parent().find('.'+coun_cla+':hidden').length == 1)
    {
        value_str = $(obj).parent().find('.'+coun_cla+':hidden').val();
    }

    var now_checked_value = new Array();
    if(value_str != '')
    {
        now_checked_value = value_str.split(',');
    }
	
	//遍历当前的数据元素

	$("#region_data_list .region-item").each(function(i,n){
        value = $(n).val();
        if(country_inx.indexOf(value) != -1)
        {
            $(n).attr('checked',true);
            if(now_checked_value.indexOf(value) == -1) {
                $(n).attr('disabled', true);
            }
        }
    });
}

//关闭地区对话框
function close_region_dialog()
{
	DialogManager.close('id_region_select');
}



///////////////////////////////////////////////////////////////////////////////////////


//展示一个提示
function bzyy_tip(id,title,type,content,width)
{
    if (!width)
    {
        width = 400;
    }
    var d = DialogManager.create(id);
    d.setTitle(title);
    d.setContents(type, content);
    d.setWidth(width);
    d.show('center');
    return d;
}


function region_city_click()
{

	$(".item_region_all").bind("click", function(){
        var xxx = this.checked;
        $(this).parent().parent().next().find('.region-item:enabled').each(function(i,n){

            n.checked = xxx;
        });
    });

    $(".region-item").bind("click", function(){

        var xxx = this.checked;
        var nflag = false;
        if(xxx)
        {
            var xl = $(this).parent().parent().find('.region-item:not(:checked)').length;
            nflag = xl==0;
        }

        $(this).parent().parent().prev().find('.item_region_all').each(function(i,n){
            this.checked = nflag;
        });

    });
}

$(document).ready(function(){
    //alert('ready');
});

if(!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}








